package com.yvon.boot.designpattern.strategy;

/**
 * 策略执行抽象
 * P - 请求参数
 * R - 响应参数
 *
 * @author yvon
 * @since 2023-07-27
 */
public interface AbstractStrategy<P, R>{
	/**
	 * 执行策略标识
	 */
	String mark();

	/**
	 * 执行策略
	 *
	 * @param requestParam 执行策略入参
	 */
	default void execute(P requestParam) {

	}

	/**
	 * 执行策略，带返回值
	 *
	 * @param requestParam 执行策略入参
	 * @return 执行策略后返回值
	 */
	default R executeResp(P requestParam) {
		return null;
	}

}
